package com.wbs.cluster.redis.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * Redis配置Entity实体
 */
@Data
@ApiModel(description = "Redis配置")
public class RedisConfigDto {

    //    #  标识是否集群，true-集群；false-单机
    @ApiModelProperty(value = "标识是否集群", dataType = "Boolean")
    private Boolean redisCluster;

    /**
     * 集群模式
     */
    //服务器地址
    @ApiModelProperty(value = "服务器地址", dataType = "String")
    private String clusterNodes;

    //重定向数
    @ApiModelProperty(value = "重定向数", dataType = "Integer")
    private int maxRedirects;

    //#控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
    @ApiModelProperty(value = "最大实例数", dataType = "Integer")
    private int maxTotal;

    //    #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
    @ApiModelProperty(value = "最大建立连接等待时间", dataType = "Integer")
    private int maxWaitMillis;

    //    #连接的最小空闲时间 默认1800000毫秒(30分钟)
    @ApiModelProperty(value = "连接的最小空闲时间 默认1800000毫秒(30分钟)", dataType = "Integer")
    private int minEvictableIdleTimeMillis;

    //    #每次释放连接的最大数目,默认3
    @ApiModelProperty(value = "每次释放连接的最大数目,默认3", dataType = "Integer")
    private int numTestsPerEvictionRun;

    //    #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
    @ApiModelProperty(value = "描的时间间隔(毫秒)", dataType = "Integer")
    private int timeBetweenEvictionRunsMillis;

    //    #在空闲时检查有效性, 默认false
    @ApiModelProperty(value = "检查有效性(默认false)", dataType = "Boolean")
    private boolean testWhileIdle;


    /*** 公用参数 ****/
    @ApiModelProperty(value = "服务器连接密码", dataType = "String")
    private String password;

    //#是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
    @ApiModelProperty(value = "在空闲时检查有效性", dataType = "Integer")
    private Boolean testOnBorrow = false;

    //连接池最大空闲连接
    @ApiModelProperty(value = "连接池中的最大空闲连接", dataType = "Integer")
    private Integer maxIdle = 20;
    @ApiModelProperty(value = "连接超时时间（毫秒）", dataType = "Integer")
    private Integer timeout = 3000;
    /*** 公用参数 ****/

    /**
     * 单机模式
     */
    @ApiModelProperty(value = "服务器地址", dataType = "String")
    private String host;
    @ApiModelProperty(value = "服务器连接端口", dataType = "String")
    private Integer port;
    @ApiModelProperty(value = "数据库索引", dataType = "Integer")
    private Integer database = 0;
    @ApiModelProperty(value = "连接池最大连接数（使用负值表示没有限制）", dataType = "Integer")
    private Integer maxActive = 200;
    @ApiModelProperty(value = "连接池中的最小空闲连接", dataType = "Integer")
    private Integer minIdle = 5;
    @ApiModelProperty(value = "连接池最大阻塞等待时间（使用负值表示没有限制）", dataType = "Integer")
    private Integer maxWait = -1;


}
